package org.example.mallweb.mallservice.mybatiscommon.articles;

import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.example.mallcommon.projo.Article;
import org.example.mallcommon.vo.ArticleUserVo;
import org.example.mallcommon.vo.ArticleVo;
import org.springframework.boot.autoconfigure.AutoConfigurationPackage;

import java.util.List;


@Mapper
/**
 * @author 韩先楚
 * 文章表
 */
public interface ArticleMapper extends BaseMapper<Article> {

    /**
     * 查询文章用户简单数据
     */
    Page<ArticleUserVo> selectArticleUserVoAllPage(@Param("page") Page<ArticleUserVo> page, @Param("articleId") Long articleId);

    /**
     * 查询文章用户简单数据(根据最新)
     */
    Page<ArticleUserVo> selectArticleUserVoNewPage(@Param("page") Page<ArticleUserVo> page, @Param("articleId") Long articleId);

    /**
     * 查询文章用户简单数据(根据点赞量)
     */
    Page<ArticleUserVo> selectArticleUserVoFavPage(@Param("page") Page<ArticleUserVo> page,@Param("articleId") Long articleId);
    /**
     * 查询文章用户简单数据(根据浏览量)
     */
    Page<ArticleUserVo> selectArticleUserVoViewPage(@Param("page") Page<ArticleUserVo> page, @Param("articleId") Long articleId);

    //更新点赞数
    void updateFavoriteCount(@Param("list") List<Long> list);

    //更新博客表的收藏数量
    void updateCollectCount(@Param("list") List<Long> list);

    //根据标签id查询推荐文章
    Page<ArticleUserVo> selectRecommendByTagId(@Param("page") Page<ArticleUserVo> page,@Param("tagId") Long tagId);

    Page<ArticleUserVo> selectRandom(Page<ArticleUserVo> articleUserVoPage,@Param("list") List<Long> list);

    //主页查询热门文章
    Page<ArticleUserVo> selectHotArticle(Page<ArticleUserVo> articleUserVoPage);
    //主页查询最新文章

    Page<ArticleUserVo> selectNewArticle(Page<ArticleUserVo> articleUserVoPage);

    //根据用户id分页查询文章
    Page<ArticleVo> selectArticleByUserId(Page<ArticleVo> articleVoPage,@Param("userId") Integer userId);

    //分页获取关注的用户的文章
    Page<ArticleUserVo> selectFollowArticle(Page<ArticleUserVo> articleUserVoPage, @Param("followList") List<Integer> followList);
}
